<!DOCTYPE html><html lang="en" data-theme="light"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0,viewport-fit=cover"><title>IP protocol | 杜鑫辉医生的博客空间</title><meta name="author" content="杜鑫辉"><meta name="copyright" content="杜鑫辉"><meta name="format-detection" content="telephone=no"><meta name="theme-color" content="#ffffff"><meta name="description" content="Immunoprecipitation (IP) protocol (2-day procedure)Note: Prepare more lysis buffer because it will be needed for beads washing in the 2nd day before and after the binding procedure.Materialslysis buff">
<meta property="og:type" content="article">
<meta property="og:title" content="IP protocol">
<meta property="og:url" content="https://gitee.com/drduxinhui/2023/10/10/IP-protocol/index.html">
<meta property="og:site_name" content="杜鑫辉医生的博客空间">
<meta property="og:description" content="Immunoprecipitation (IP) protocol (2-day procedure)Note: Prepare more lysis buffer because it will be needed for beads washing in the 2nd day before and after the binding procedure.Materialslysis buff">
<meta property="og:locale" content="en_US">
<meta property="og:image" content="https://i.imgs.ovh/2023/10/04/V4AVR.th.jpeg">
<meta property="article:published_time" content="2023-10-10T07:06:02.000Z">
<meta property="article:modified_time" content="2023-10-10T07:12:26.921Z">
<meta property="article:author" content="杜鑫辉">
<meta name="twitter:card" content="summary">
<meta name="twitter:image" content="https://i.imgs.ovh/2023/10/04/V4AVR.th.jpeg"><link rel="shortcut icon" href="/drduxinhui/img/favicon.png"><link rel="canonical" href="https://gitee.com/drduxinhui/2023/10/10/IP-protocol/index.html"><link rel="preconnect" href="//cdn.jsdelivr.net"/><link rel="preconnect" href="//busuanzi.ibruce.info"/><link rel="stylesheet" href="/drduxinhui/css/index.css"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free/css/all.min.css" media="print" onload="this.media='all'"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fancyapps/ui/dist/fancybox/fancybox.min.css" media="print" onload="this.media='all'"><script>const GLOBAL_CONFIG = {
  root: '/drduxinhui/',
  algolia: undefined,
  localSearch: undefined,
  translate: undefined,
  noticeOutdate: undefined,
  highlight: {"plugin":"highlighjs","highlightCopy":true,"highlightLang":true,"highlightHeightLimit":false},
  copy: {
    success: 'Copy successfully',
    error: 'Copy error',
    noSupport: 'The browser does not support'
  },
  relativeDate: {
    homepage: false,
    post: false
  },
  runtime: '',
  dateSuffix: {
    just: 'Just',
    min: 'minutes ago',
    hour: 'hours ago',
    day: 'days ago',
    month: 'months ago'
  },
  copyright: undefined,
  lightbox: 'fancybox',
  Snackbar: undefined,
  source: {
    justifiedGallery: {
      js: 'https://cdn.jsdelivr.net/npm/flickr-justified-gallery/dist/fjGallery.min.js',
      css: 'https://cdn.jsdelivr.net/npm/flickr-justified-gallery/dist/fjGallery.min.css'
    }
  },
  isPhotoFigcaption: false,
  islazyload: false,
  isAnchor: false,
  percent: {
    toc: true,
    rightside: false,
  },
  autoDarkmode: false
}</script><script id="config-diff">var GLOBAL_CONFIG_SITE = {
  title: 'IP protocol',
  isPost: true,
  isHome: false,
  isHighlightShrink: false,
  isToc: true,
  postUpdate: '2023-10-10 15:12:26'
}</script><noscript><style type="text/css">
  #nav {
    opacity: 1
  }
  .justified-gallery img {
    opacity: 1
  }

  #recent-posts time,
  #post-meta time {
    display: inline !important
  }
</style></noscript><script>(win=>{
    win.saveToLocal = {
      set: function setWithExpiry(key, value, ttl) {
        if (ttl === 0) return
        const now = new Date()
        const expiryDay = ttl * 86400000
        const item = {
          value: value,
          expiry: now.getTime() + expiryDay,
        }
        localStorage.setItem(key, JSON.stringify(item))
      },

      get: function getWithExpiry(key) {
        const itemStr = localStorage.getItem(key)

        if (!itemStr) {
          return undefined
        }
        const item = JSON.parse(itemStr)
        const now = new Date()

        if (now.getTime() > item.expiry) {
          localStorage.removeItem(key)
          return undefined
        }
        return item.value
      }
    }
  
    win.getScript = url => new Promise((resolve, reject) => {
      const script = document.createElement('script')
      script.src = url
      script.async = true
      script.onerror = reject
      script.onload = script.onreadystatechange = function() {
        const loadState = this.readyState
        if (loadState && loadState !== 'loaded' && loadState !== 'complete') return
        script.onload = script.onreadystatechange = null
        resolve()
      }
      document.head.appendChild(script)
    })
  
    win.getCSS = (url,id = false) => new Promise((resolve, reject) => {
      const link = document.createElement('link')
      link.rel = 'stylesheet'
      link.href = url
      if (id) link.id = id
      link.onerror = reject
      link.onload = link.onreadystatechange = function() {
        const loadState = this.readyState
        if (loadState && loadState !== 'loaded' && loadState !== 'complete') return
        link.onload = link.onreadystatechange = null
        resolve()
      }
      document.head.appendChild(link)
    })
  
      win.activateDarkMode = function () {
        document.documentElement.setAttribute('data-theme', 'dark')
        if (document.querySelector('meta[name="theme-color"]') !== null) {
          document.querySelector('meta[name="theme-color"]').setAttribute('content', '#0d0d0d')
        }
      }
      win.activateLightMode = function () {
        document.documentElement.setAttribute('data-theme', 'light')
        if (document.querySelector('meta[name="theme-color"]') !== null) {
          document.querySelector('meta[name="theme-color"]').setAttribute('content', '#ffffff')
        }
      }
      const t = saveToLocal.get('theme')
    
          if (t === 'dark') activateDarkMode()
          else if (t === 'light') activateLightMode()
        
      const asideStatus = saveToLocal.get('aside-status')
      if (asideStatus !== undefined) {
        if (asideStatus === 'hide') {
          document.documentElement.classList.add('hide-aside')
        } else {
          document.documentElement.classList.remove('hide-aside')
        }
      }
    
    const detectApple = () => {
      if(/iPad|iPhone|iPod|Macintosh/.test(navigator.userAgent)){
        document.documentElement.classList.add('apple')
      }
    }
    detectApple()
    })(window)</script><meta name="generator" content="Hexo 6.3.0"></head><body><div id="sidebar"><div id="menu-mask"></div><div id="sidebar-menus"><div class="avatar-img is-center"><img src="https://i.imgs.ovh/2023/10/04/V4AVR.th.jpeg" onerror="onerror=null;src='/img/friend_404.gif'" alt="avatar"/></div><div class="sidebar-site-data site-data is-center"><a href="/drduxinhui/archives/"><div class="headline">Articles</div><div class="length-num">47</div></a><a href="/drduxinhui/tags/"><div class="headline">Tags</div><div class="length-num">0</div></a><a href="/drduxinhui/categories/"><div class="headline">Categories</div><div class="length-num">0</div></a></div><hr class="custom-hr"/><div class="menus_items"><div class="menus_item"><a class="site-page" href="/drduxinhui/"><i class="fa-fw fas fa-home"></i><span> Home</span></a></div><div class="menus_item"><a class="site-page" href="/drduxinhui/archives/"><i class="fa-fw fas fa-archive"></i><span> Archives</span></a></div></div></div></div><div class="post" id="body-wrap"><header class="post-bg" id="page-header"><nav id="nav"><span id="blog-info"><a href="/drduxinhui/" title="杜鑫辉医生的博客空间"><span class="site-name">杜鑫辉医生的博客空间</span></a></span><div id="menus"><div class="menus_items"><div class="menus_item"><a class="site-page" href="/drduxinhui/"><i class="fa-fw fas fa-home"></i><span> Home</span></a></div><div class="menus_item"><a class="site-page" href="/drduxinhui/archives/"><i class="fa-fw fas fa-archive"></i><span> Archives</span></a></div></div><div id="toggle-menu"><a class="site-page" href="javascript:void(0);"><i class="fas fa-bars fa-fw"></i></a></div></div></nav><div id="post-info"><h1 class="post-title">IP protocol</h1><div id="post-meta"><div class="meta-firstline"><span class="post-meta-date"><i class="far fa-calendar-alt fa-fw post-meta-icon"></i><span class="post-meta-label">Created</span><time class="post-meta-date-created" datetime="2023-10-10T07:06:02.000Z" title="Created 2023-10-10 15:06:02">2023-10-10</time><span class="post-meta-separator">|</span><i class="fas fa-history fa-fw post-meta-icon"></i><span class="post-meta-label">Updated</span><time class="post-meta-date-updated" datetime="2023-10-10T07:12:26.921Z" title="Updated 2023-10-10 15:12:26">2023-10-10</time></span></div><div class="meta-secondline"><span class="post-meta-separator">|</span><span class="post-meta-pv-cv" id="" data-flag-title="IP protocol"><i class="far fa-eye fa-fw post-meta-icon"></i><span class="post-meta-label">Post View:</span><span id="busuanzi_value_page_pv"><i class="fa-solid fa-spinner fa-spin"></i></span></span></div></div></div></header><main class="layout" id="content-inner"><div id="post"><article class="post-content" id="article-container"><h1 id="Immunoprecipitation-IP-protocol-2-day-procedure"><a href="#Immunoprecipitation-IP-protocol-2-day-procedure" class="headerlink" title="Immunoprecipitation (IP) protocol (2-day procedure)"></a>Immunoprecipitation (<strong>IP</strong>) protocol (<strong>2-day procedure</strong>)</h1><h2 id="Note-Prepare-more-lysis-buffer-because-it-will-be-needed-for-beads-washing-in-the-2nd-day-before-and-after-the-binding-procedure"><a href="#Note-Prepare-more-lysis-buffer-because-it-will-be-needed-for-beads-washing-in-the-2nd-day-before-and-after-the-binding-procedure" class="headerlink" title="Note: Prepare more lysis buffer because it will be needed for beads washing in the 2nd day before and after the binding procedure."></a><strong>Note:</strong> Prepare more lysis buffer because it will be needed for beads washing in the 2nd day before and after the binding procedure.</h2><h2 id="Materials"><a href="#Materials" class="headerlink" title="Materials"></a>Materials</h2><p>lysis buffer: RIPA (RadioImmunoPrecipitation Assay) buffer</p>
<blockquote>
<p>50mM Tris HCl pH 8<br>150 mM NaCl<br>1% NP-40<br>0.5% sodium deoxycholate<br>0.1% SDS<br>#The 10% sodium deoxycholate stock solution (5 g into 50 ml) must be protected from light.<br>Immediately before use, add <strong>Protease inhibitors</strong></p>
</blockquote>
<h2 id="Preparation-of-the-lysates-Non-denaturing"><a href="#Preparation-of-the-lysates-Non-denaturing" class="headerlink" title="Preparation of the lysates (Non-denaturing)"></a>Preparation of the lysates (Non-denaturing)</h2><ol>
<li><p>Place the cell culture dish on ice and wash the cells with ice-cold PBS.</p>
</li>
<li><p>Drain the PBS, then add ice-cold lysis buffer (1ml per 107 cells&#x2F;100mm dish&#x2F;150cm2 flask; 0.5ml per 5x106<br>cells&#x2F;60mm dish&#x2F;75cm2 flask).</p>
</li>
<li><p>Scrape adherent cells off the dish using a cold plastic cell scraper then gently transfer the cell suspension into a<br>pre-cooled microfuge tube.</p>
</li>
<li><p>Maintain constant agitation for 30 minutes at 4°C.</p>
</li>
<li><p>Centrifuge in a microcentrifuge at 4°C.</p>
</li>
</ol>
<p>You may have to vary the centrifugation force and time depending on the cell type. A guideline is 20 minutes at<br>12,000 rpm but this must be determined by the end-user (e.g. leukocytes need a very light centrifugation).</p>
<ol start="6">
<li>Gently remove the tubes from the centrifuge and place on ice, aspirate the supernatant and place in a fresh<br>tube kept on ice, and discard the pellet.</li>
</ol>
<h2 id="Pre-clean-the-lysates-Not-necessary-if-the-final-detection-method-is-WB"><a href="#Pre-clean-the-lysates-Not-necessary-if-the-final-detection-method-is-WB" class="headerlink" title="Pre-clean the lysates (Not necessary if the final detection method is WB)"></a>Pre-clean the lysates (Not necessary if the final detection method is WB)</h2><h2 id="Binding-with-the-antibody"><a href="#Binding-with-the-antibody" class="headerlink" title="Binding with the antibody"></a>Binding with the antibody</h2><ol>
<li>On ice, in a tube add 10-500 μg cell lysate plus the recommended amount of antibody. These amounts will be<br>chosen depending on the abundance of the protein and the affinity of the antibody for the protein, typically in a pilot<br>experiment where a fixed amount of protein is precipitated by increasing amounts of antibody.<br>You can check the antibody datasheet for recommended antibody concentration.</li>
</ol>
<blockquote>
<p>As a guideline use:<br>1 – 5 μl polyclonal antiserum<br>1 μg affinity-purified polyclonal antibody<br>0.2 to 1 μl ascites fluid (monoclonal antibody)<br>20 to 100 μl culture supernatant (monoclonal antibody)</p>
</blockquote>
<ol start="2">
<li>Incubate the sample with the antibody between 1 hour to overnight (depending again on the amount of<br>protein and affinity properties of the antibody), at 4°C, preferably under agitation</li>
</ol>
<p><font color=red><strong>Stop here till the next day</strong></font></p>
<hr>
<h2 id="Preparation-of-the-Sepharose-beads"><a href="#Preparation-of-the-Sepharose-beads" class="headerlink" title="Preparation of the Sepharose beads"></a>Preparation of the Sepharose beads</h2><p>If using a monoclonal antibody choose protein G-coupled Sepharose beads, if using a polyclonal antibody protein A-coupled Sepharose beads are usually suitable (please refer to ‘Choosing the protein beads’ table. </p>
<p>If the beads come as a powder incubate 100 mg of beads in 1 ml PBS 0.1M, wash for one hour so they swell up, then centrifuge, remove the supernatant and discard. Add 1ml PBS-BSA 1% w&#x2F;v, mix for one hour and rinse in PBS twice. Remove the supernatant and add 400 μl of <strong>buffer made with protease inhibitors (can be the same as the lysis buffer)</strong>. </p>
<p>The slurry is now ready for use. It can be stored at 4°C for a few days; for longer periods keep the beads in PBS with 0.02% azide (rinse extensively the beads on the day of use and make up in lysis buffer). You can also buy pre-swollen beads as slurry ready for use.</p>
<blockquote>
<p>It is advisable to use pipette tips with the end cut off to prevent damage to the beads.</p>
</blockquote>
<h2 id="Binding-with-beads"><a href="#Binding-with-beads" class="headerlink" title="Binding with beads"></a>Binding with beads</h2><ol>
<li><p>Mix the slurry well and add 70-100 μl of the beads to each sample. Always keep samples on ice. Beads will tend to stick to the sides of the tip so try to minimize the movement in the pipette and use a tip cut 5 mm from the top.</p>
</li>
<li><p>Incubate the lysate-beads mixture at 4°C under rotary agitation for 4 hours (the optimal incubation time can be determined in a preliminary experiment).</p>
</li>
<li><p>When the incubation time is over, centrifuge the tubes, remove the supernatant and wash the beads in lysis buffer three times (each time centrifuging at 4°C and removing the supernatant).</p>
</li>
<li><p>Finally, remove the last supernatant and add 25-50 μl of 2x loading buffer. Boil at 95-100°C for 5 minutes to denature the protein and separate it from the protein-A&#x2F;G beads, then centrifuge and keep the supernatant where the protein is now. You can then freeze the samples or run them on a SDS-PAGE.</p>
</li>
</ol>
<p><strong>Reference</strong> : IP protocol from abcam <a href="https://gitee.com/drduxinhui/pefect_day/raw/master/img/%E5%AE%9E%E9%AA%8C%E7%9B%B8%E5%85%B3protocol%E5%8F%8A%E8%AF%B4%E6%98%8E%E6%96%87%E4%BB%B6/immunoprecipitation%20protocol%20(ip).pdf">Protocol原文下载</a></p>
</article><div class="post-copyright"><div class="post-copyright__author"><span class="post-copyright-meta">Author: </span><span class="post-copyright-info"><a href="https://gitee.com/drduxinhui">杜鑫辉</a></span></div><div class="post-copyright__type"><span class="post-copyright-meta">Link: </span><span class="post-copyright-info"><a href="https://gitee.com/drduxinhui/2023/10/10/IP-protocol/">https://gitee.com/drduxinhui/2023/10/10/IP-protocol/</a></span></div><div class="post-copyright__notice"><span class="post-copyright-meta">Copyright Notice: </span><span class="post-copyright-info">All articles in this blog are licensed under <a target="_blank" rel="noopener" href="https://creativecommons.org/licenses/by-nc-sa/4.0/">CC BY-NC-SA 4.0</a> unless stating additionally.</span></div></div><div class="tag_share"><div class="post-meta__tag-list"></div><div class="post_share"><div class="social-share" data-image="https://i.imgs.ovh/2023/10/04/V4AVR.th.jpeg" data-sites="facebook,twitter,wechat,weibo,qq"></div><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/butterfly-extsrc/sharejs/dist/css/share.min.css" media="print" onload="this.media='all'"><script src="https://cdn.jsdelivr.net/npm/butterfly-extsrc/sharejs/dist/js/social-share.min.js" defer></script></div></div><nav class="pagination-post" id="pagination"><div class="prev-post pull-left"><a href="/drduxinhui/2023/10/10/%E7%A7%91%E6%8A%80%E6%9F%A5%E6%96%B0/" title="科技查新"><div class="cover" style="background: var(--default-bg-color)"></div><div class="pagination-info"><div class="label">Previous Post</div><div class="prev_info">科技查新</div></div></a></div><div class="next-post pull-right"><a href="/drduxinhui/2023/10/10/%E7%A7%91%E7%A0%94%E5%9B%A2%E9%98%9F%E9%82%AE%E7%AE%B1%E4%BF%A1%E6%81%AF/" title="科研团队信息"><div class="cover" style="background: var(--default-bg-color)"></div><div class="pagination-info"><div class="label">Next Post</div><div class="next_info">科研团队信息</div></div></a></div></nav></div><div class="aside-content" id="aside-content"><div class="card-widget card-info"><div class="is-center"><div class="avatar-img"><img src="https://i.imgs.ovh/2023/10/04/V4AVR.th.jpeg" onerror="this.onerror=null;this.src='/drduxinhui/img/friend_404.gif'" alt="avatar"/></div><div class="author-info__name">杜鑫辉</div><div class="author-info__description"></div></div><div class="card-info-data site-data is-center"><a href="/drduxinhui/archives/"><div class="headline">Articles</div><div class="length-num">47</div></a><a href="/drduxinhui/tags/"><div class="headline">Tags</div><div class="length-num">0</div></a><a href="/drduxinhui/categories/"><div class="headline">Categories</div><div class="length-num">0</div></a></div><a id="card-info-btn" target="_blank" rel="noopener" href="https://github.com/xxxxxx"><i class="fab fa-github"></i><span>Follow Me</span></a><div class="card-info-social-icons is-center"><a class="social-icon" href="mailto:drduxinhui@163.com" target="_blank" title="Email"><i class="fas fa-envelope" style="color: #4a7dbe;"></i></a></div></div><div class="card-widget card-announcement"><div class="item-headline"><i class="fas fa-bullhorn fa-shake"></i><span>Announcement</span></div><div class="announcement_content">This is my Blog</div></div><div class="sticky_layout"><div class="card-widget" id="card-toc"><div class="item-headline"><i class="fas fa-stream"></i><span>Catalog</span><span class="toc-percentage"></span></div><div class="toc-content"><ol class="toc"><li class="toc-item toc-level-1"><a class="toc-link" href="#Immunoprecipitation-IP-protocol-2-day-procedure"><span class="toc-number">1.</span> <span class="toc-text">Immunoprecipitation (IP) protocol (2-day procedure)</span></a><ol class="toc-child"><li class="toc-item toc-level-2"><a class="toc-link" href="#Note-Prepare-more-lysis-buffer-because-it-will-be-needed-for-beads-washing-in-the-2nd-day-before-and-after-the-binding-procedure"><span class="toc-number">1.1.</span> <span class="toc-text">Note: Prepare more lysis buffer because it will be needed for beads washing in the 2nd day before and after the binding procedure.</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Materials"><span class="toc-number">1.2.</span> <span class="toc-text">Materials</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Preparation-of-the-lysates-Non-denaturing"><span class="toc-number">1.3.</span> <span class="toc-text">Preparation of the lysates (Non-denaturing)</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Pre-clean-the-lysates-Not-necessary-if-the-final-detection-method-is-WB"><span class="toc-number">1.4.</span> <span class="toc-text">Pre-clean the lysates (Not necessary if the final detection method is WB)</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Binding-with-the-antibody"><span class="toc-number">1.5.</span> <span class="toc-text">Binding with the antibody</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Preparation-of-the-Sepharose-beads"><span class="toc-number">1.6.</span> <span class="toc-text">Preparation of the Sepharose beads</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#Binding-with-beads"><span class="toc-number">1.7.</span> <span class="toc-text">Binding with beads</span></a></li></ol></li></ol></div></div><div class="card-widget card-recent-post"><div class="item-headline"><i class="fas fa-history"></i><span>Recent Post</span></div><div class="aside-list"><div class="aside-list-item no-cover"><div class="content"><a class="title" href="/drduxinhui/2024/04/10/R-codes/" title="R codes">R codes</a><time datetime="2024-04-10T07:07:01.000Z" title="Created 2024-04-10 15:07:01">2024-04-10</time></div></div><div class="aside-list-item no-cover"><div class="content"><a class="title" href="/drduxinhui/2024/02/06/How-to-write-a-paper/" title="How to write a paper">How to write a paper</a><time datetime="2024-02-06T06:43:49.000Z" title="Created 2024-02-06 14:43:49">2024-02-06</time></div></div><div class="aside-list-item no-cover"><div class="content"><a class="title" href="/drduxinhui/2024/02/05/%E4%B8%B4%E5%BA%8A%E5%A4%A7%E4%BD%93%E7%85%A7%E7%89%87/" title="临床大体照片">临床大体照片</a><time datetime="2024-02-05T09:23:33.000Z" title="Created 2024-02-05 17:23:33">2024-02-05</time></div></div><div class="aside-list-item no-cover"><div class="content"><a class="title" href="/drduxinhui/2024/02/03/%E6%95%B0%E5%AD%97%E5%8C%96%E9%87%8D%E5%BB%BA2%E2%80%94%E2%80%94%E8%85%93%E9%AA%A8%E8%BF%91%E7%AB%AF%E9%AA%A8%E8%82%BF%E7%98%A4/" title="数字化重建2——腓骨近端骨肿瘤">数字化重建2——腓骨近端骨肿瘤</a><time datetime="2024-02-03T08:39:16.000Z" title="Created 2024-02-03 16:39:16">2024-02-03</time></div></div><div class="aside-list-item no-cover"><div class="content"><a class="title" href="/drduxinhui/2024/02/03/%E4%B8%AA%E4%BA%BA%E7%85%A7%E7%89%87%E9%A1%B5/" title="个人照片页">个人照片页</a><time datetime="2024-02-02T23:37:15.000Z" title="Created 2024-02-03 07:37:15">2024-02-03</time></div></div></div></div></div></div></main><footer id="footer"><div id="footer-wrap"><div class="copyright">&copy;2020 - 2024 By 杜鑫辉</div><div class="framework-info"><span>Framework </span><a target="_blank" rel="noopener" href="https://hexo.io">Hexo</a><span class="footer-separator">|</span><span>Theme </span><a target="_blank" rel="noopener" href="https://github.com/jerryc127/hexo-theme-butterfly">Butterfly</a></div></div></footer></div><div id="rightside"><div id="rightside-config-hide"><button id="readmode" type="button" title="Read Mode"><i class="fas fa-book-open"></i></button><button id="darkmode" type="button" title="Switch Between Light And Dark Mode"><i class="fas fa-adjust"></i></button><button id="hide-aside-btn" type="button" title="Toggle between single-column and double-column"><i class="fas fa-arrows-alt-h"></i></button></div><div id="rightside-config-show"><button id="rightside_config" type="button" title="Setting"><i class="fas fa-cog fa-spin"></i></button><button class="close" id="mobile-toc-button" type="button" title="Table Of Contents"><i class="fas fa-list-ul"></i></button><button id="go-up" type="button" title="Back To Top"><span class="scroll-percent"></span><i class="fas fa-arrow-up"></i></button></div></div><div><script src="/drduxinhui/js/utils.js"></script><script src="/drduxinhui/js/main.js"></script><script src="https://cdn.jsdelivr.net/npm/@fancyapps/ui/dist/fancybox/fancybox.umd.min.js"></script><div class="js-pjax"><script>(() => {
  const $mermaid = document.querySelectorAll('#article-container .mermaid-wrap')
  if ($mermaid.length === 0) return
  const runMermaid = () => {
    window.loadMermaid = true
    const theme = document.documentElement.getAttribute('data-theme') === 'dark' ? 'dark' : 'default'

    Array.from($mermaid).forEach((item, index) => {
      const mermaidSrc = item.firstElementChild
      const mermaidThemeConfig = '%%{init:{ \'theme\':\'' + theme + '\'}}%%\n'
      const mermaidID = 'mermaid-' + index
      const mermaidDefinition = mermaidThemeConfig + mermaidSrc.textContent

      const renderFn = mermaid.render(mermaidID, mermaidDefinition)

      const renderV10 = () => {
        renderFn.then(({svg}) => {
          mermaidSrc.insertAdjacentHTML('afterend', svg)
        })
      }

      const renderV9 = svg => {
        mermaidSrc.insertAdjacentHTML('afterend', svg)
      }

      typeof renderFn === 'string' ? renderV9(renderFn) : renderV10()
    })
  }

  const loadMermaid = () => {
    window.loadMermaid ? runMermaid() : getScript('https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js').then(runMermaid)
  }

  btf.addModeChange('mermaid', runMermaid)

  window.pjax ? loadMermaid() : document.addEventListener('DOMContentLoaded', loadMermaid)
})()</script></div><script defer="defer" id="fluttering_ribbon" mobile="true" src="https://cdn.jsdelivr.net/npm/butterfly-extsrc/dist/canvas-fluttering-ribbon.min.js"></script><script async data-pjax src="//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"></script></div></body></html>